#pragma once

#include <assert.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define SIZE 1024
#define SYNC_NOW 1  // 立即刷新
#define SYNC_LINE 2 // 行刷新
#define SYNC_FULL 4 // 缓冲区满刷新

typedef struct _FILE{
    int flags; // 刷新方式
    int fileno;
    int cap; // buffer 的总容量
    int size; // buffer 当前使用量
    char buffer[SIZE];
}FILE_;

// 自己封装fopen函数   path_name文件名   mode 打开方式
FILE_ *fopen_(const char *path_name,const char *mode);

// 自己封装fwrite函数   
void fwrite_(const void *ptr, int num, FILE_ *fp);

// 刷新函数
void fflush(FILE_ *FP);

// 自己封装关闭函数
void fclose_(FILE_* fp);
